home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_400 / 422_02 / cutil / cvtcom.c < prev    next >
C/C++ Source or Header  |  1994-03-20  |  898b  |  37 lines

  1. /*
  2.  * Simple filter to convert C++ style end-of-line comments (//)
  3.  * into standard 'C' comments
  4.  *
  5.  * Compile command: cc calc -fop
  6.  */
  7. #include <stdio.h>
  8.  
  9. main()
  10. {
  11.     int c, lastc;
  12.     char incomment;
  13.  
  14.     incomment = 0;
  15.     while((c = getc(stdin)) != EOF) {
  16.         switch(c) {
  17.             case '\'' :            /* Character constant */
  18.             case '"' :            /* Literal String */
  19.                 if(!incomment) {
  20.                     putc(c, stdout);
  21.                     while(((lastc = getc(stdin)) != EOF) && (lastc != c)) {
  22.                         putc(lastc, stdout);
  23.                 if(lastc == '\\')        /* Next char is protected */
  24.                     putc(getc(stdin), stdout); } }
  25.                 break;
  26.             case '/' :            /* Could be the start of a comment */
  27.                 if((lastc == '/') && !incomment) {
  28.                     incomment = 1;
  29.                     c = '*'; }
  30.                 break;
  31.             case '\n' :            /* Newline, reset comment flags */
  32.                 if(incomment)
  33.                     fputs(" */", stdout);
  34.                 incomment = 0; }
  35.         putc(lastc = c, stdout); }
  36. }
  37.